package com.leetcode.双周赛.第45场;

import java.util.Arrays;

/**
 * @author: xiaomi
 * @date: 2021/2/6
 * @description: 5657. 唯一元素的和
 * https://leetcode-cn.com/contest/biweekly-contest-45/problems/sum-of-unique-elements/
 */
public class A_5657_唯一元素的和 {
    public static void main(String[] args) {
        int[] nums = new int[]{1, 2, 3, 2};
        //25
//        nums = new int[]{10, 6, 9, 6, 9, 6, 8, 7};
        A_5657_唯一元素的和 action = new A_5657_唯一元素的和();
        int res = action.sumOfUnique(nums);
        System.out.println("res = " + res);
    }

    /**
     * 关键在于判断唯一的元素
     * --
     * 排序 + 判断 + 增加一个 标志位表示 i 处是否为 重复的
     * ||
     * set
     *
     * @param nums
     * @return
     */
    public int sumOfUnique(int[] nums) {
        //边界判断
        int res = 0;
        int len = nums.length;
        if (len < 2) {
            return nums[0];
        }
        Arrays.sort(nums);
        boolean flag = true;
        for (int i = 1; i < len; i++) {
            if (nums[i - 1] != nums[i]) {
                if (flag) {
                    res += nums[i - 1];
                } else {
                    flag = true;
                }
            } else {
                flag = false;
            }
        }
//最后判断一个
        if (nums[len - 1] != nums[len - 2]) {
            res += nums[len - 1];
        }
        return res;
    }
}
